package main;


import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import runner.Simulator;
import view.ImageFrame;
import view.Sound;

/**
 * Starting frame with the parameters input for the simulator
 * @author Projectgroep 5
 *
 */
public class SimulatorStart extends JFrame {
	
	JPanel panel, imagePanel;
	
	/**
	 * Create the SimulatorStart frame
	 */
	public SimulatorStart() {
		
		makeFrame();
		
		this.pack();
		this.setVisible(true);
	}
	
	/**
	 * Make frame for parameter input	
	 */
	public void makeFrame() {
		setTitle("Parameters simulatie");
		this.setLocation(300,100);
		
		//Create the boxes for parameters input
		Box depthLabelArea = Box.createHorizontalBox();
		depthLabelArea.add(new JLabel("Hoogte van het veld"));
		final JTextField depthField = new JTextField(30);
		depthField.setText("100");
		Box widthLabelArea = Box.createHorizontalBox();
		widthLabelArea.add(new JLabel("Breedte van het veld"));
		final JTextField widthField = new JTextField(30);
		widthField.setText("100");
		
		Box levensduurKonijnenLabelArea = Box.createHorizontalBox();
        levensduurKonijnenLabelArea.add(new JLabel("Levensduur Konijnen", JLabel.LEFT));
        final JTextField levensduurKonijnenField = new JTextField(30);
        levensduurKonijnenField.setText("10");
        Box nakomelingenKonijnenLabelArea = Box.createHorizontalBox();
        nakomelingenKonijnenLabelArea.add(new JLabel("Maximaal aantal nakomelingen Konijnen", JLabel.LEFT));
        final JTextField nakomelingenKonijnenField = new JTextField(30);
        nakomelingenKonijnenField.setText("5");
        Box voortplantingsleeftijdKonijnenLabelArea = Box.createHorizontalBox();
        voortplantingsleeftijdKonijnenLabelArea.add(new JLabel("Voortplantingsleeftijd Konijnen", JLabel.LEFT));
        final JTextField voortplantingsleeftijdKonijnenField = new JTextField(30);
        voortplantingsleeftijdKonijnenField.setText("4");
        
        Box levensduurVossenLabelArea = Box.createHorizontalBox();
        levensduurVossenLabelArea.add(new JLabel("Levensduur Vossen", JLabel.LEFT));
        final JTextField levensduurVossenField = new JTextField(30);
        levensduurVossenField.setText("10");
        Box nakomelingenVossenLabelArea = Box.createHorizontalBox();
        nakomelingenVossenLabelArea.add(new JLabel("Maximaal aantal nakomelingen Vossen", JLabel.LEFT));
        final JTextField nakomelingenVossenField = new JTextField(30);
        nakomelingenVossenField.setText("6");
        Box voortplantingsleeftijdVossenLabelArea = Box.createHorizontalBox();
        voortplantingsleeftijdVossenLabelArea.add(new JLabel("Voortplantingsleeftijd Vossen", JLabel.LEFT));
        final JTextField voortplantingsleeftijdVossenField = new JTextField(30);
        voortplantingsleeftijdVossenField.setText("8");
        
        Box levensduurWolvenLabelArea = Box.createHorizontalBox();
        levensduurWolvenLabelArea.add(new JLabel("Levensduur Wolven", JLabel.LEFT));
        final JTextField levensduurWolvenField = new JTextField(30);
        levensduurWolvenField.setText("16");
        Box nakomelingenWolvenLabelArea = Box.createHorizontalBox();
        nakomelingenWolvenLabelArea.add(new JLabel("Maximaal aantal nakomelingen Wolven", JLabel.LEFT));
        final JTextField nakomelingenWolvenField = new JTextField(30);
        nakomelingenWolvenField.setText("5");
        Box voortplantingsleeftijdWolvenLabelArea = Box.createHorizontalBox();
        voortplantingsleeftijdWolvenLabelArea.add(new JLabel("Voortplantingsleeftijd Wolven", JLabel.LEFT));
        final JTextField voortplantingsleeftijdWolvenField = new JTextField(30);
        voortplantingsleeftijdWolvenField.setText("12");
        
        // Add all boxes to one Area
        Box Area = Box.createVerticalBox();
        
        Area.add(widthLabelArea);
        Area.add(widthField);
        Area.add(depthLabelArea);
        Area.add(depthField);
        
        Area.add(levensduurKonijnenLabelArea);
		Area.add(levensduurKonijnenField);
		Area.add(nakomelingenKonijnenLabelArea);
		Area.add(nakomelingenKonijnenField);
		Area.add(voortplantingsleeftijdKonijnenLabelArea);
		Area.add(voortplantingsleeftijdKonijnenField);
		
		Area.add(levensduurVossenLabelArea);
		Area.add(levensduurVossenField);
		Area.add(nakomelingenVossenLabelArea);
		Area.add(nakomelingenVossenField);
		Area.add(voortplantingsleeftijdVossenLabelArea);
		Area.add(voortplantingsleeftijdVossenField);
		
		Area.add(levensduurWolvenLabelArea);
		Area.add(levensduurWolvenField);
		Area.add(nakomelingenWolvenLabelArea);
		Area.add(nakomelingenWolvenField);
		Area.add(voortplantingsleeftijdWolvenLabelArea);
		Area.add(voortplantingsleeftijdWolvenField);
		
		// Setting up the start button to start simulation with given input
		JPanel buttonArea = new JPanel();
		JButton start = new JButton("Start simulatie");
		start.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent ev)
            {
            	// Add sound to button
            	new Sound("http://www.members.tripod.com/~buggerluggs/wavs/howdy_ho.wav");
                new Simulator(Integer.parseInt(depthField.getText()),
                			Integer.parseInt(widthField.getText()),
                			Integer.parseInt(levensduurKonijnenField.getText()),
                			Integer.parseInt(levensduurVossenField.getText()),
                			Integer.parseInt(levensduurWolvenField.getText()),
                			Integer.parseInt(nakomelingenKonijnenField.getText()),
                			Integer.parseInt(nakomelingenVossenField.getText()),
                			Integer.parseInt(nakomelingenWolvenField.getText()),
                			Integer.parseInt(voortplantingsleeftijdKonijnenField.getText()),
                			Integer.parseInt(voortplantingsleeftijdVossenField.getText()),
                			Integer.parseInt(voortplantingsleeftijdWolvenField.getText())
                		);
                ;
            }
        });
		buttonArea.add(start);
		
		// Create an image to add to frame
		imagePanel = new ImageFrame("jager2.png");
		
		// Add content to frame
		this.add(Area, BorderLayout.CENTER);
        this.add(buttonArea, BorderLayout.SOUTH);
        this.add(imagePanel, BorderLayout.EAST);
        
	}
	
}
